package pwd.allen.byteBuddy;

import net.bytebuddy.implementation.bind.annotation.AllArguments;
import net.bytebuddy.implementation.bind.annotation.This;

import java.util.Arrays;

/**
 * 在拦截器中使用bytebuddy支持的一些注解
 *
 * @Argument 绑定单个参数
 * @AllArguments 绑定所有参数的数组
 * @This 当前被拦截的、动态生成的那个对象
 * @DefaultCall 调用默认方法而非super的方法
 * @SuperCall 用于调用父类版本的方法
 * @RuntimeType 可以用在返回值、参数上，提示ByteBuddy禁用严格的类型检查
 * @Super 当前被拦截的、动态生成的那个对象的父类对象
 * @FieldValue 注入被拦截对象的一个字段的值
 *
 * @author pwdan
 * @create 2023-06-28 17:10
 **/
public class Target2 {
    public static int anotherAdd(@AllArguments Object[] args, @This Object proxy) {
        System.out.println("入参数组:" + Arrays.toString(args));
        System.out.println("被拦截并且被bytebuddy增强后的对象：" + proxy);
        return 100;
    }
}
